package com.zerdoor.service.impl;

import com.zerdoor.dao.ITaskListDao;
import com.zerdoor.dao.ItemProgressDao;
import com.zerdoor.dao.LoginDao;
import com.zerdoor.model.UserInfo;
import com.zerdoor.service.ICommonPayService;
import com.zerdoor.service.ItemProgressService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Map;

/**
 * 项目状态维护业务层实现类(专供任务调度使用)
 * Created by zhongjieyu on 2015/2/11.
 */
@Service
public class ItemProgressServiceImpl implements ItemProgressService {

    @Autowired
    private ICommonPayService commonPayService;


    @Autowired
    private ItemProgressDao itemProgressDao;



    @Override
    public void updateMaintenanceItemProgress() throws Exception {


        //查询所有招标时间到期项目
        List<Map> itemList = itemProgressDao.findExpireItem();

        //遍历过期项目集
        for(Map item : itemList){

            //如果竞标人数为0表示没有人竞标该项目，则关闭该项目并解冻预存资金
            if(0 == Integer.parseInt(String.valueOf(item.get("personNum")))){

                //判断是否托管定金,如果是，那么就进行定金的解冻
                if(101001 == Integer.parseInt(String.valueOf(item.get("is_deposit")))){

                    //得到冻结金额
                    float money = Float.parseFloat(String.valueOf(item.get("prestoreSurplus")));
                    int userId = Integer.parseInt(String.valueOf(item.get("user_id")));
                    int orderId = Integer.parseInt(String.valueOf(item.get("order_task_id")));

                    //解冻项目定金
                    commonPayService.updateThawFreezeMoneyByUserId(money,userId,112108,true,orderId);

                }

                //改变项目状态为关闭
                itemProgressDao.updateCloseStatusByItemId(String.valueOf(item.get("item_id")));

                //改变项目订单预存资余额
                itemProgressDao.updateOrderItemPrestoreSurplusByItemId(item);

            }else{

                //改变项目进度为进入到下一个进度
                itemProgressDao.updateItemNextProgress(String.valueOf(item.get("item_id")));

            }

        }

    }

    @Override
    public void updateMaintenanceRaceProgress() throws Exception {


        //查询所有招标时间到期项目
        List<Map> raceList = itemProgressDao.findExpireRace();

        //遍历过期项目集
        for(Map race : raceList){

            //如果竞标人数为0，那么表示没有人竞标该竞赛，则关闭该竞赛活动，并且解冻竞赛活动资金
            if(0 == Integer.parseInt(String.valueOf(race.get("personNum")))){

                //得到冻结金额
                float money = Float.parseFloat(String.valueOf(race.get("total_price")));
                int userId = Integer.parseInt(String.valueOf(race.get("user_id")));
                int orderId = Integer.parseInt(String.valueOf(race.get("order_race_id")));

                //解冻竞赛活动定金
                commonPayService.updateThawFreezeMoneyByUserId(money,userId,112108,false,orderId);

                //改变竞赛状态为关闭
                itemProgressDao.updateCloseStatusByRaceId(String.valueOf(race.get("race_id")));

            }else{

                //改变竞赛进度为进入到下一个进度
                itemProgressDao.updateRaceNextProgress(String.valueOf(race.get("race_id")));

            }


        }

    }
}
